package com.he.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Objects;

/**
 * @author He
 * @version 1.0
 * @Date 2023/9/17 22:33
 * @Desc 分页工具类
 */
public class PageUtils {
    private static final ThreadLocal<Page<?>> PAGE_HOLDER = new ThreadLocal<>();

    // 将分页参数设置到ThreadLocal中
    public static void setCurrentPage(Page<?> page) {
        PAGE_HOLDER.set(page);
    }

    // 获取分页参数
    public static Page<?> getPage() {
        Page<?> page = PAGE_HOLDER.get();
        if (Objects.isNull(page)) {
            setCurrentPage(new Page<>());
        }
        return PAGE_HOLDER.get();
    }

    // 获取当前页
    public static Long getCurrent() {
        return getPage().getCurrent();
    }

    // 获取每页显示的条数
    public static Long getSize() {
        return getPage().getSize();
    }

    // 获取分页查询的起始位置
    public static Long getLimit() {
        return (getCurrent() - 1) * getSize();
    }

    // 清除ThreadLocal中的分页参数
    public static void remove() {
        PAGE_HOLDER.remove();
    }
}
